package interfaces
{
	import flash.display.DisplayObject;
	import flash.geom.Point;
	import flash.text.TextFormat;
	
	import view.Arm.BaseTank;
	import view.monster.BaseMonster;
	import view.plant.PlantItem;

	public interface IGameView
	{
		/**
		 * 生产tank 
		 * @param type 坦克类型
		 * @param p 坦克坐标
		 * 
		 */
		function produceTank(type:String,p:Point):void;
		
		/**
		 * 获取场景内所有怪兽数据
		 * @return 
		 * 
		 */
		function getMonsterAry():Array;
		
		/**
		 * 发射子弹 
		 * @param type 子弹类型
		 * @param p 子弹坐标
		 * @param tar_p 目标点坐标
		 * @param pos 偏移
		 * @param shoutTarget 射击目标
		 */
		function shoutBullet(type:String,p:Point,tar_p:Point,tar:BaseTank = null,posX:int=0,posY:int=0,shoutTarget:DisplayObject=null):void;
		/**
		 * 播放动画
		 * @param type
		 * @param back
		 * 
		 */
	    function playAnimation(type:String,back:Function=null):void;
		
		/**
		 * 获得当前选中坦克类型 
		 * @return 
		 * 
		 */
		function getCurArmType():String;
		
		/**
		 * 显示Alert弹出框 
		 * @return 
		 * 
		 */
		function showAlert(txt:String,callback:Function,yes:Boolean,no:Boolean,format:TextFormat = null):void;
		
		/**
		 * 显示鼠标tips 
		 * @param type
		 * 
		 */
		 function showMouseTip(type:String):void;
		 /**
		  * 计算得分
		  * @param energy 贡献能量值
		  */
		 function calculateScore(energy:int):void;
		 /**
		  *重置gameView 
		  * 
		  */
		 function resetView():void;
		 
		 /**
		  * 生产爆炸特效
		  * @param name
		  * @param _x
		  * @param _y
		  * @param _rotation
		  */
		 function createExplode(name:String,_x:int=0,_y:int=0,_rotation:int = 0,scale:Number = 0):void;
		 
		 /**
		  * 设置格子的 isCanSite属性  
		  * @param _x:int,_y:int 格子坐标查找格子用
		  * 
		  */
		 function setGradIsCanSite(_x:int,_y:int,boo:Boolean):void;
		 /**
		  * plant素材加载完毕初始化植物
		  * 
		  */
		 function initPlant():void;
		 /**
		  * 获取 PlantView 的目标对象
		  * @return 
		  * 
		  */
		 function get targetPlant():PlantItem;
		 /**
		  * 设置目标植物
		  * @return 
		  * 
		  */
		 function set targetPlant(value:*):void;
		 /**
		  * 获得所以植物 
		  * @return 
		  * 
		  */		 
		 function getPlantAry():Array;
		 /**
		  * 获得MonsterView的目标对象
		  * @return 
		  * 
		  */
		 function get targetMonster():BaseMonster;
		 /**
		  * 设置目标怪物
		  * @return 
		  * 
		  */
		 function set targetMonster(value:*):void;
		 /**
		  *显示鼠标特效 
		  * 
		  */
		 function showMouseEffect(_x:int,_y:int):void;
		 /**
		  * 生产加能量动画
		  * @param energy 贡献能量值
		  */
		 function createEnergyMotion(energy:int,_x:int,_y:int):void;
		 /**
		  * 设置游戏当前怪物波数和总波数 
		  * @param cur
		  * @param total
		  * 
		  */
		 function setWave(cur:int,total:int):void;
		 /**
		  * 显示植物tips 
		  * @param isShow
		  * @param enery
		  * @param hp
		  * 
		  */	
		 function showPlantTip(isShow:Boolean,enery:int=0,hp:int =0,_x:int=0,_y:int=0):void;
		 /**
		  * 显示小提示 
		  * @param str
		  * 
		  */
		 function showTips(str:String):void;
		 /**
		  * 获得坦克列表 
		  * @return 
		  * 
		  */
		 function getTankAry():Array;
		 /**
		  * 显示隐藏怪物信息 
		  * @param isShow
		  * @param _x
		  * @param _y
		  * @param hp
		  * @param energy
		  * @param exp_rad
		  * @param hurt
		  * 
		  */
		 function showMonsterTip(isShow:Boolean,_x:int = 0,_y:int = 0,hp:int = 0,energy:int = 0,exp_rad:int = 0,hurt:int = 0):void;
		 /**
		  * 显示坦克信息 
		  * @param isShow
		  * @param _x
		  * @param _y
		  * @param hp
		  * @param shoutRadius
		  * @param rotate
		  * @param shoutRate
		  * @return 
		  * 
		  */
		 function showTankTip(isShow:Boolean,_x:int=0,_y:int=0,hp:int=0,shoutRadius:int=0,rotate:int=0,shoutRate:int=0):void;
		 /**
		  *  
		  * @param p1
		  * @param p2
		  * 
		  */
		 function createBulletHole(p1:Point,p2:Point):void;
	}
}